package org.dtrd.modules.achievement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dtrd.modules.achievement.entity.bean.SigninTemplateContent;
import org.dtrd.modules.achievement.entity.bean.SigninTemplateListInfo;
import org.dtrd.modules.achievement.entity.po.DtrdEntRdSigninTemplate;
import org.dtrd.modules.achievement.entity.request.SigninTemplateListRequest;
import org.dtrd.modules.achievement.entity.request.SigninTemplatePageRequest;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 打卡计划模板服务类
 * </p>
 *
 * @author QR
 * @since 2022-01-04
 */
public interface IDtrdEntRdSigninTemplateService extends IService<DtrdEntRdSigninTemplate> {

    List<SigninTemplateListInfo> getSigninTemplateList(SigninTemplateListRequest request);

    IPage<SigninTemplateListInfo> pageSigninTemplate(SigninTemplatePageRequest request);

    SigninTemplateContent getSigninTemplate(Integer dataId);

    /**
     * 通过id获取模版名字
     */
    String getTemplateNameById(Integer templateId);

    /**
     * 查询模版是否已经关联患者
     *
     * @param templateId 患者模版id
     * @return 查询结果
     */
    boolean hasRelatePatient(Integer templateId);

    /**
     * 判断是否有重名的模版
     *
     * @param templateId   模版id
     * @param templateName 待判断的模版名字
     * @param orgCode
     * @return 判断结果
     */
    boolean hasSameTemplateName(Integer templateId, String templateName, String orgCode);

    boolean saveOrUpdateSigninTemplate(SigninTemplateContent dto);

    boolean removeSigninTemplate(Integer dataId);

    /**
     * 根据用户ID与服务包持续时间查询打卡计划模板名称
     *
     * @param patientId
     * @param startTime 服务包开始时间
     * @param endTime   服务包结束时间
     * @return
     */
    String getTemplateNameByServiceInfo(Integer patientId, Date startTime, Date endTime);

    /**
     * 获取打卡模版名字
     */
    String getTemplateNameByPatientId(Integer patientId);
}
